iT邦幫忙

2024 iThome 鐵人賽

DAY 16
0
自我挑戰組

從零開始學Python系列 第 16

[Day16] Python OpenCV -1

  • 分享至 

  • xImage
  •  

OpenCV是一個電腦視覺模組,可應用於臉部手勢辨識或圖像分割等影像辨識相關的領域。

  1. 安裝以及導入
    安裝
!pip install opencv-python

導入

import cv2  
  1. 載入一張圖片測試
img = cv2.imread("dog.jpg")  # 讀取圖片
cv2.imshow("img",img)        # 開啟圖片的視窗名稱
cv2.waitKey(0)               # 設定時間讓視窗關閉(0表示無限久,直到自己主動關閉)

https://ithelp.ithome.com.tw/upload/images/20240906/20168811BOAgw0gUXg.png

  1. 改變圖片大小
  • 設定像素
img = cv2.resize(img, (250, 250))
cv2.imshow("img",img)        # 開啟圖片的視窗名稱
cv2.waitKey(0)               # 設定時間讓視窗關閉(0表示無限久,直到自己主動關閉)

https://ithelp.ithome.com.tw/upload/images/20240906/20168811zDhHalgWqK.png

  • 調整長寬倍數
img = cv2.resize(img, (0, 0), fx=0.3, fy=0.5)
cv2.imshow("img",img)        # 開啟圖片的視窗名稱
cv2.waitKey(0)               # 設定時間讓視窗關閉(0表示無限久,直到自己主動關閉)

https://ithelp.ithome.com.tw/upload/images/20240906/20168811428owD1dA3.png

  1. 載入影片
video = cv2.VideoCapture("video.mp4")

while True: #使用迴圈重複擷取frame,等於播放一個影片
    bool, frame = video.read() #bool是一個布林值,如果True就會擷取一個frame
    if bool:
        cv2.imshow("video", frame)
    else:
        break 
    cv2.waitKey(1) 每一幀會等1ms
video = cv2.VideoCapture("video.mp4")

while True:
    bool, frame = video.read()
    if bool:
        cv2.imshow("video", frame)
    else:
        break 
    if cv2.waitKey(1) == ord("q"): #點選鍵盤上的q就會停止
        break
vvideo = cv2.VideoCapture(0) #會開啟視訊畫面

while True:
    bool, frame = video.read()
    if bool:
        cv2.imshow("video", frame)
    else:
        break 
    if cv2.waitKey(1) == ord("q"):
        break
  1. numpy 與圖片關係
import cv2
img = cv2.imread("dog.jpg")
print(type(img))
#輸出:<class 'numpy.ndarray'>

ndarray是一種多維的陣列型態,屬於numpy模組下的一種型態。

import cv2
img = cv2.imread("dog.jpg")
print(img.shape)
#輸出:(854, 1280, 3)

代表以下模式的陣列
[[[B, G, R],[],[]...1280],
[],
[],...
854
]

  1. 創建一張自己的圖片
import numpy as np 

img = np.empty((300, 300, 3), np.uint8) #創建多維陣列

for row in range(300):
    for col in range(300):
        img[row][col] = [0, 255, 0] 

cv2.imshow("img", img)
cv2.waitKey(0)

https://ithelp.ithome.com.tw/upload/images/20240906/20168811FX8V7gtFxA.png

  1. 切割圖片
import cv2
img = cv2.imread("dog.jpg")

newimg = img[200:400, 400:800]
cv2.imshow("img", img)
cv2.imshow("newimg", newimg)
cv2.waitKey(0)

https://ithelp.ithome.com.tw/upload/images/20240906/20168811umxC7YlDwE.png


上一篇
[Day15] Python機器學習(邏輯回歸 Logistic Regression)
下一篇
[Day17] Python OpenCV -2
系列文
從零開始學Python30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言